{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn import datasets, linear_model, cross_validation, svm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用糖尿病数据\n",
    "def load_data():\n",
    "    diabetes = datasets.load_diabetes()\n",
    "    x_train = diabetes.data\n",
    "    y_train = diabetes.target\n",
    "    return cross_validation.train_test_split(x_train, y_train, test_size = 0.25, random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Coefficients:[ 2.14940259  0.4418875   6.35258779  4.62357282  2.82085901  2.42005063\n",
      " -5.3367464   5.41765142  7.26812843  4.33778867], intercept [99.]\n",
      "Score: -0.5627288485339224\n"
     ]
    }
   ],
   "source": [
    "def test_LinearSVR(*data):\n",
    "    x_train, x_test, y_train, y_test = data\n",
    "    svr = svm.LinearSVR()\n",
    "    svr.fit(x_train,y_train)\n",
    "    print('Coefficients:{0}, intercept {1}'.format(svr.coef_, svr.intercept_))\n",
    "    print('Score: {0}'.format(svr.score(x_test, y_test)))\n",
    "\n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_SVR(x_train, x_test, y_train, y_test )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epsilon_insensitive\n",
      "Coefficients:[ 2.14940259  0.4418875   6.35258779  4.62357282  2.82085901  2.42005063\n",
      " -5.3367464   5.41765142  7.26812843  4.33778867], intercept [99.]\n",
      "Score: -0.5627288485339224\n",
      "squared_epsilon_insensitive\n",
      "Coefficients:[   7.05570052 -103.32541064  395.67832795  221.76252727  -11.07925557\n",
      "  -63.55608229 -176.67700174  117.56269956  322.63822262   95.61717465], intercept [152.37275664]\n",
      "Score: 0.37814494951934907\n"
     ]
    }
   ],
   "source": [
    "# 损失函数对结果的影响\n",
    "def test_LinearSVR_loss(*data):\n",
    "    x_train, x_test, y_train, y_test = data\n",
    "    losses = ('epsilon_insensitive','squared_epsilon_insensitive')\n",
    "    for loss in losses:\n",
    "        svr = svm.LinearSVR(loss=loss)\n",
    "        svr.fit(x_train,y_train)\n",
    "        print(loss)\n",
    "        print('Coefficients:{0}, intercept {1}'.format(svr.coef_, svr.intercept_))\n",
    "        print('Score: {0}'.format(svr.score(x_test, y_test)))\n",
    "\n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_LinearSVR_loss(x_train, x_test, y_train, y_test )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEbCAYAAAA1T5h7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8VdW99/HP75zMA4QMDCEgMxjmGOOIyiMCWqfrcEGrrdaKtQ7XVu+tHW4HentLe3ufW6enahVHnK1KLU61Vy1VEVQEETARlVmGACEh00nW88c+ORwgCUnIGZJ836/XeZ09rL3372zC+Z2119prm3MOERERAF+sAxARkfihpCAiIiFKCiIiEqKkICIiIUoKIiISoqQgIiIhSgoiIhKipCDdlpmtMrPTYh2HSFeipCBdnpl9YWbTDl7unBvrnHsjBiFhZieb2dtmtsfMys3sH2Z2rJm9bGZzmyl/npltNbOE4PwXZlZtZpXB5Q+aWUb0P4n0NEoKIp3IzBLMrBfwInAHkA0MBH4B1AIPAZeZmR206eXAAudcIGzZOc65DGASMBn4YaTjF1FSkG7r4BpEcP4WM1sR/AX/pJmlBNflm9mzZrbdzD43sxsP2tetZvaZme01s0/M7J8O2u8PzGwFUAWMAnDOPe6ca3DOVTvnXnXOrQCeB3KAKWHb9wHOBh5u7nM457YCr+Alh5Y+a28ze9zMdgRjXG5m+v8t7aY/Gulp/hmYCQwFJgBXBL88/wx8hPer/nTgJjObEbbdZ3hf5L3xfvU/amYDwtZfAnwNyAI+BRrM7CEzOzP4pQ+Ac64aeAr4xkExrXHOfdRcwGZWAJwJlLXyuX4DNABHBWO8zDnX2NqJEGmOkoL0NLc75zY758rxEsEk4Fggzzk31zlX55xbB/wRmN20kXPu6eB2jc65J4FSoOSg/W4I1goqgJMBF9zPdjNbaGb9gmUfAi5qqqXgJYiHmon1eTPbC2wAtgE/a+Vz1Qdj2heM8eP2nBSRJkoK0tNsDZveB2Tg/brON7PdTS/gR0DTlzhm9o3gJZmm9eOA3LB9bQg/iHNutXPuCudcQbBsPvD74LrFwA7gfDMbjpdcHmsm1vOdc5nAacCYpuOZ2deDDdCVZvZSsOwa4Bagysyuaf9pEfEkxDoAkTiwAfjcOTeyuZVmdhTeL/7TgXeccw1mthwIbyxucQx659waM3sQCP+yfhivhjAaeMU591Ur278Z3P53eIliAbAgLL5zgeuBIudcaWsfVORwVFOQ7iLRzFLCXu35wfMesDfYWJxqZn4zG2dmxwbXp+N96W8HMLMr8X79N8vMxpjZzcG2AMxsEF6bw7thxR4GpgFX0/ylo4P9HjjDzCY2s24csAn4Kni8weHtGCLtoaQg3cUioDrs9fO2buica8Dr/TMJ+Bzv0s59eA22OOc+Af4beAfvi3c88I9WdrkXOA5YYmZVeMngY+DmsGN+AbyNl3AWtiHG7XiJ5KfNrH4AqAM2BC9t/QldBZAOMj15TUREmqimICIiIUoKIiISoqQgIiIhSgoiIhKipCAiIiFdrttabm6uGzJkSKzDEBHpUt5///0dzrm8w5XrcklhyJAhLFu2LNZhiIh0KWb2ZVvK6fKRiIiEKCmIiEiIkoKIiIQoKYiISIiSgoiIhCgpiIhISJfrktpRX+yoonRbZaftzw5f5NBtWtiopeUHHs/CZ1opF75fa3Z5c8du2v/++QM3DD/+wWWajmMWvmx/iabloXKhZbZ/X2HzTdM+278fM/CZF4XPwspZsFywPMFy4WV9vrBlofXg99kB50hEelBSeGXVVn790ppYhyFxKDxB+M3w+/YnDW/aSPAZPp/37g+9fKH5RL/3nuDzkeD3yjVNJ/mDy/w+kvw+Ev1Got9HUoLPew9OJyX4SE7wkZzg994T90+nJPpJTfSTkugjJclPSoKfRL+SmnS+HpMULigq4KQRuYcv2AYdeQSFa+FpjW3ZV3iR1p5/cWC5ltYcWsYdPB+cOHi5t+zAjcLLNK3zpvfvyx1Q3nnrg2Wa1rtgof3LvbKNbn88jW7/to2h7ZrK7C9PcFmj2799Y/iyxgPXe/OOhuC6hkZvXUPj/mWBxuA65003NASnGxq9+WCZfXUBGhod9Q2OQGMjgQZHfWMj9QFvvi7glW96PxJ+n5GW6Cct2U9aUgKpiX7Sk/2kJiWQmZxARnIC6ckJZKQE51MS6JWSSO/UA1+ZKQn4fEou4ukxSSEvM5m8zORYhyES0tjoqGtopL7BSxZ1DY3U1u9/rw00UBtopKa+gZp67726voGaem/5vroA1XXe+766htD7nup6Nu+uprImQGWt92qNGfROTSQ7PYmc9CSy05PITk8mJz2J3Iwk+vZKoV+vZPpmptC3VzLJCf4onSGJhYgmBTObCdwG+IH7nHPzDlp/BfBfeM+XBbjTOXdfJGMSiRc+n5Hi85OSGNkv2cZGR1VdgL01ASpq6tmzr5491ftfFdX17NpXT3lVHTuravl8RxXvf7mL8qo6mqvM9ElLpF+vFAZmpTKwTyoFfVIp6JPGwCxvOjs9SZe1urCIJQUz8wN3AWcAG4GlZrYw+LzbcE86566PVBwiPZ3PZ2SmJJKZkkg+qW3errHRsWtfHdv21vJVRQ3bKmrZtreGrypq2bKnhs27q1n6RTkVNQfWRDJTEhiel+G9+qaHpofkpJHgV4fHeBfJmkIJUOacWwdgZk8A5wEHJwURiUM+n5GTkUxORjJHD+jVYrmKmno27apm465qNpTv4/MdVXy2vZLFZdt59oONoXLJCT4K83sxYWBvxhdkMaGgN8PzMvCrPSOuRDIpDAQ2hM1vBI5rptyFZnYK8CnwPefchoMLmNkcYA7A4MGDIxCqiHRUr5REeg1IbDZx7K2pZ932Ksq2VbJ6SwUrNu3h6fc38tA73oCdqYl+JhT05sThuZw0IoeJg7JIVG0ipqy13ixHtGOzi4CZzrlvB+cvB44Lv1RkZjlApXOu1syuAWY55/5Pa/stLi52GjpbpOtqaHR8vqOSFRv3sGLjHpZ+Uc4nWypwDtKS/JQMzeak4bmcPDKXMf0z1T7RSczsfedc8eHKRbKmsAkYFDZfwP4GZQCcczvDZu8DfhvBeEQkDvh9xoi+mYzom8kFRQUA7Kqq4911O/nHZzt4u2wnb6xdDcCwvHTOmZDPuZPyGZ6XEcuwe4xI1hQS8C4JnY6XDJYClzrnVoWVGeCc2xKc/ifgB86541vbr2oKIt3flj3V/G3NNv780WaWfF6OczA2vxfnTMzn7AkDKOiTFusQu5y21hQilhSCQZwF/B6vS+p859yvzGwusMw5t9DMfg2cCwSAcuBa51yrtx0rKYj0LFv31PCXlVtY+NFmPtqwG4BpR/fjO6cOo3hIdoyj6zriIilEgpKCSM+1fuc+nnl/Aw+/+yW799VTNDiLOacMZ3phP92VfRhKCiLSbe2rC/D0so3ct3gdG8qrGZabzrenDOPCYwbqjusWKCmISLcXaGjkpY+3cu9b61i5aQ9Dc9OZe95YpozMi3VocaetSUEdgkWky0rw+zhnYj4Lrz+JB648Fuccl9//Htc/9gFfVdTEOrwuSUlBRLo8M2Pq6L68fNMpfG/aKF795CtO/+83mb/4cwINjbEOr0tRUhCRbiMl0c+/TBvJqzedQtFRfZj74iece+c/WLFxd6xD6zKUFESk2xmSm85DVx7LH75eRHlVHRf+4W0eW7I+1mF1CUoKItItmRlnjh/AyzdN4YThufzouZX88E8rqA00xDq0uKakICLdWlZaEg9ccSzXTR3O4+9tYNY977J1jxqhW6KkICLdnt9n/OuMMdx9WRGlX+3l7DsW897n5bEOKy4pKYhIjzFz3ACev+4keqUkcOkf3+WRd76IdUhxR0lBRHqUkf0yef76kzh1VB7//sIqHnn3y1iHFFeUFESkx+mVksjdlx/DtKP78tMXPuaF5ZsOv1EPoaQgIj1Sot/HnZcWUTIkm+8/9RGvr/4q1iHFBSUFEemxUhL93PfNYsbm9+K7Cz7g3XU7D79RN6ekICI9WmZKIg9eWcKg7DS+/dCyHn/3s5KCiPR42elJPHJVCb1TE/nm/Pco27Y31iHFjJKCiAgwoHcqC759HH6fj8vue4/te2tjHVJMKCmIiAQNyU3noW8dy659dfzbMx/R1Z430xmUFEREwozN780PzxzD/67d3iPvYVBSEBE5yDdPHMKpo/L41V9WU/pVz2pfUFIQETmImfFfF08gIzmBG59Y3qNGVlVSEBFpRt/MFH570QRWb6ngd6+sjXU4UaOkICLSgtOP7sdlxw/mj3//nMWlO2IdTlQoKYiItOLHZxUyPC+dm59ezq6quliHE3FKCiIirUhN8nPb7MmUV9Xxwz+t7PbdVJUUREQOY9zA3twyfTQvr9rKiyu2xDqciFJSEBFpg6unDGNM/0z+57VPCTQ0xjqciFFSEBFpA5/P+P4Zo1i3o4o/fdB9n7+gpCAi0kZnFPZjYkFvbnu9tNveu6CkICLSRmbGzdNHs2l3NU8u3RDrcCJCSUFEpB2mjMylZEg2d/ytjOq67ldbUFIQEWkHr7Ywiu17a3nk3S9iHU6nU1IQEWmn44blMGVkLn944zMqawOxDqdTKSmIiHTALdNHs2tfPfMXfx7rUDqVkoKISAdMHJTFGYX9+ONb69i9r/sMf6GkICLSQTdPH0VlXYB731oX61A6jZKCiEgHjenfi3Mm5PPAP75gR2X3eKazkoKIyBG4adpI6hoaub+btC0oKYiIHIFheRmcNiqP5z/cRGNj1x9BNaJJwcxmmtlaMyszs1tbKXehmTkzK45kPCIikXDe5IFs2VPDks/LYx3KEYtYUjAzP3AXcCZQCFxiZoXNlMsE/gVYEqlYREQi6Yyj+5Ge5OeF5V1/oLxI1hRKgDLn3DrnXB3wBHBeM+V+CfwGqIlgLCIiEZOa5GfG2P78ZeUWauq79tAXkUwKA4HwEaM2BpeFmFkRMMg595fWdmRmc8xsmZkt2759e+dHKiJyhM6fPJC9NQHeWLst1qEckZg1NJuZD/i/wM2HK+ucu9c5V+ycK87Ly4t8cCIi7XTi8BxyM5J5/sPNsQ7liEQyKWwCBoXNFwSXNckExgFvmNkXwPHAQjU2i0hXlOD3cc7EAfxtzTb2VNfHOpwOi2RSWAqMNLOhZpYEzAYWNq10zu1xzuU654Y454YA7wLnOueWRTAmEZGIOX/SQOoaGnn54677HOeIJQXnXAC4HngFWA085ZxbZWZzzezcSB1XRCRWJhT0Zmhuepe+hJQQyZ075xYBiw5a9tMWyp4WyVhERCLNzDhvUj63vV7Klj3VDOidGuuQ2k13NIuIdKLzJw3EOVi4vGvWFpQUREQ60ZDcdCYOyuJ5JQUREQH4p0n5rN5Swadf7Y11KO0W0TaFuLJ9LWxdGeso2sespRWduK8WN+jAvqyFMnbQsoPnW9iPWSvbtlA2vNxhlzX33lI5nzdtvmbmCc77DlweevkPXebzh63zgU+/z7qTsyfm88u/rOb5DzfxbzPHxDqcduk5SeHTl+G1Ztu4ReKD+b1k4UsITvvCphOCr/Dp4Lw/EXyJ4E8Ivid50/6k4Ctx//KEJPAnh72neNMJKd4rMQ0SUyAhFRKDr6R0b3lSunc8OazcjGROHpHLC8s3c8v00fh8HfghFyM9JylMvhxGnRnrKNqhhSF4XUeG5m3nNq0eoy1xuWaWu+bnW9yPCyvSwrYHlHUHLT/MstA7LSw/+L3x0GkXnCZsOvyFg8aGg9Y17J8OrWsITh/03jTdUB9c1giNgUNfDfXee6AOGqugoQ4aAtBYH5wOvgfqgvNH8DCYhJRgkkiH5MzmX6lZkNrn0FdaDiRldKDW2jWdPzmf7z35Ecu+3EXJ0OxYh9NmPScppGV7L5GezrlgoqgNJopaqK+GQA3U10D9vuD0Pm95XZX3qt8HdZVQty+4rBJqK2DfDtj1OdTuhZoKCFS3fOzENEjPg4y+kN4XMvIgcwD0Lgi+BnnvCcnROx8RMr2wP6mJH/P88k1KCiISx8yCl4ySIBLfvfU1ULMbqncFX7uhuhyqdkDVdqjcBlXbYNcXsGEJ7NvJITXHjH6QNRjyRkPe0dB3jPfeK7/L1DTSkxOYOiaPN9ZswzmHdZG4lRREpHMlpkBif8js37bygVqo2Ax7NsCejd5r93ovaXz6Cnz46P6yyb29BFFwLAw6DgYf79U64tQJw3NZtHIrG8qrGZyTFutw2kRJQURiKyEZsod6r+ZU7YTtq2Hbati+Br5aBUvvg3fu9NZnD4PBJ3hJYsTp3uWnOHHCMO+y0bvrdiopiIh0ivQcSD8Zhpy8f1mgFrZ8BOvf9V5rX4LlC7x1A4+Bo8+Bo8+FnOGxiTloeF4GuRlJvLtuJ/987KDDbxAHlBREpOtJSIZBJd7rpBu9xvPta2HtIli9EP76c+/Vt9BLEOMvhtyRUQ/TzDhuaA7vrtvZZdoVdMeMiHR9Zl5bw5Tvw5w34KaPYeY8ryvsm7+FO4vh0Yug7PUOduvuuOOHZbN5Tw0bylvplRVHlBREpPvJGgTHXwtXLoKb18LUH3uXmx69AP7f8bDsAa9rbRQcPywH8NoVugIlBRHp3jL7wan/Bt/7GM6/27uz+8Wb4H8K4X9/7d2LEUEj+maQk56kpCAiElcSkmHSJXDNW3DFIjjqJHhzHvzhRFj3ZsQOa2YcP2x/u0K8U1IQkZ7FDIacBLMXwDcWem0MD58Lz18H+8ojcsimdoWNu+K/XUFJQUR6rmGnwnffgZNugo8eh7tKYOUznd4Y3dSu8E4XuISkpCAiPVtiKpzxC6/XUu8CePYqeHy2N0RHJ+lK7QpKCiIiAAMmwFV/hRn/6XVdfeAsb/iNTtDUrrBkXXnctysoKYiINPEnwAnXwWXPwO4NcP902P5pp+z6+GHZbNpdHfftCkoKIiIHG3YaXPGiN4T4/BmwcdkR7/K4LtKuoKQgItKc/Elw1auQ0gseOgdKXzui3Y3sm0F2F2hXUFIQEWlJ9jC46jXIGQGPzYLlj3d4V167QnbctysoKYiItCajL1zxF2+U1ue/Ayue7vCujh+WE/ftCkoKIiKHk9ILvv6099yGF2+CHWUd2k1XuF9BSUFEpC0SkuHC+8CfCM9c4T12tJ26QruCkoKISFv1LoDz/wBbV8Jr/97uzcPbFeJVm5OCmZ1sZlcGp/PMrIVn54mIdGOjz4Tjr4P37oVPFrZ786Z2hQ3l0Rm6u73alBTM7GfAD4AfBhclAo+2vIWISDc27eeQPxkWXg+7vmzXpvH+fIW21hT+CTgXqAJwzm0GMiMVlIhIXEtIgovmQ2OjN1ZSQ32bN93frhCfl5DamhTqnNex1gGYWXrkQhIR6QKyh8G5t8PGpfC3X7Z5s6Z2ha5eU3jKzO4BsszsauCvwB8jF5aISBcw7gI45gr4x23eIHptNHlQHzbtrmZXVV3kYuugNiUF59zvgGeAZ4HRwE+dc3dEMjARkS5h5jzIHg6v/azNz2EY2S8DgNJtlZGMrEMOmxTMzG9m/+uce80596/OuVucc0c2CIiISHeRmApTboavVkLZX9u0ych+XpPsp1/tjWRkHXLYpOCcawAazax3FOIREel6xl8MvQrg7//dpuL5vVPISE6gNA6TQkIby1UCK83sNYI9kACcczdGJCoRka4kIQlOvAFe/gF8+Q4cdUKrxc2MEX0zuublo6A/Af8OvAW8H/YSERGAom9AWg4s/r9tKj6ybwafftVFk4Jz7iHgcfYng8eCy1plZjPNbK2ZlZnZrc2s/46ZrTSz5Wa22MwK2/sBRETiQlIaHH8tlL4KW1YctviofpnsqKyNux5Ibb2j+TSgFLgL+H/Ap2Z2ymG28QfLnwkUApc086X/mHNuvHNuEvBboG0pVkQkHh17NSRlwuL/OWzREXHaA6mtl4/+G5junDvVOXcKMAM43KcuAcqcc+ucc3XAE8B54QWccxVhs+kEb44TEemSUrPg2G/BJ8/Dzs9aLToqTnsgtTUpJDrn1jbNOOc+xRv/qDUDgQ1h8xuDyw5gZteZ2Wd4NQU1XItI13b8deBL9G5oa0V+7xTSk/yUddGawjIzu8/MTgu+/ggc+ZOsAefcXc654XgD7v2kuTJmNsfMlpnZsu3bt3fGYUVEIiOzH0y+DD56HCo2t1jMzBjRL7PL1hSuBT7B+yV/Y3D62sNsswkYFDZfEFzWkieA85tb4Zy71zlX7JwrzsvLa2PIIiIxctKN0NgA79zVarFRcdgtta1JIQG4zTl3gXPuAuB2wH+YbZYCI81sqJklAbOBAwYfN7ORYbNfw2vMFhHp2voMgfEXwbIHYF/Lo6GO7JfB9r217N4XPz2Q2poUXgdSw+ZT8QbFa5FzLgBcD7wCrAaecs6tMrO5ZnZusNj1ZrbKzJYD3we+2a7oRUTi1cnfg/oq72E8Ldg/3EX81BbaekdzinMuFLVzrtLM0g63kXNuEbDooGU/DZv+l7YGKiLSpfQ9GkZOhw8ehlN/AGaHFBnZt6lb6l5KhmZHO8JmtbWmUGVmRU0zZlYMVEcmJBGRbmLsBVCxCTZ/0OzqgVmppCf5Ke2CNYV/AZ42s6am9AHArMiEJCLSTYyaAeaH1X+GgcccsrqpB1LptvjpgdTWmsJQYDJej6PXgLXoRjMRkdalZcPQKV5SaOFZC/E2BlJbk8K/B+8+zgKm4g118YeIRSUi0l2MORt2lsH2tc2uHhVnPZDamhQagu9fA/7onPsLkBSZkEREupExX/Pe1/y52dUj+3o9kOLlfoW2JoVNwWc0zwIWmVlyO7YVEem5euVDwbGw+sVmVzc9mjNe7mxu6xf7P+PdbzDDObcbyAb+NWJRiYh0J2POhi3LYff6Q1bFWw+ktj5PYZ9z7k/OudLg/Bbn3KuRDU1EpJs4+hzvfc1fDlm1/ylsXaumICIiHZUzHPoWer2QmjGyX2bc9EBSUhARiYajz4H170DloSM9j+wbPz2QlBRERKJhzNngGmHtokNWNT1wJx56ICkpiIhEQ//xkDUY1hzaC6mpB1I8NDYrKYiIRIMZHH0urHsDaioOWJXfO5W0JH9cdEtVUhARiZYxZ0NDHZQe2HnT5zNGxkkPJCUFEZFoGVQC6X2bvYQ0om+mLh+JiPQoPj+MOQtKX4P6mgNWjeqXwba9tezZVx+j4DxKCiIi0XT0OVBX6bUthAk1Nsf4EpKSgohINA05BZJ7H3IjW9PAeLG+iU1JQUQkmhKSYNR0736FxsbQ4oFZ8dEDSUlBRCTahp4C1eWw6/PQIp/PGwOpLMY3sCkpiIhEW/5k733zhwcsHtk3UzUFEZEeJ+9oSEg5NCnEQQ8kJQURkWjzJ0D/Cc3UFLweSJ/tiN0lJCUFEZFYyJ8Mm5dDY0No0aDsNAA2lO+LVVRKCiIiMZE/GeqrYEdpaFFBn1QANu6qjlVUSgoiIjHRTGNzWlICOelJbNylmoKISM+SOxIS0w9pVyjITmNDuWoKIiI9i88PAyYemhT6pKqmICLSI+VPhq0roCEQWjSoTxqbdlfT0OhiEpKSgohIrORPhkANbF8TWlTQJ5X6Bse2vTWtbBg5SgoiIrHSTGPz/m6psWlXUFIQEYmV7GHeiKnhSSHULTU27QpKCiIiseLzQf6Bjc35WV5SUE1BRKQnyp8MX30MgToAUhL99OuVrJqCiEiPlD8ZGupg26rQooI+aWxQUhAR6YGaa2zuk6rLRyIiPVLWUZDa54CkUNAnja0VNQQaGlvZMDKUFEREYsksOGJqeLfUVBoaHVv2RP9eBSUFEZFYy58M21ZDvXfJqKBP8F6FGLQrRDQpmNlMM1trZmVmdmsz679vZp+Y2Qoze93MjopkPCIicSl/MjQG4CuvsXlQMClsjEG7QsSSgpn5gbuAM4FC4BIzKzyo2IdAsXNuAvAM8NtIxSMiErcOamwekJWCz2JzA1skawolQJlzbp1zrg54AjgvvIBz7n+dc02f+l2gIILxiIjEp14DIb1vKCkk+n0M6J3Khhg8bCeSSWEgsCFsfmNwWUuuAl6KYDwiIvGpmcbmWA2hHRcNzWZ2GVAM/FcL6+eY2TIzW7Z9+/boBiciEg35k73RUuuqgOANbN2pTQHYBAwKmy8ILjuAmU0Dfgyc65yrbW5Hzrl7nXPFzrnivLy8iAQrIhJT+ZPBNcKWFYDXLfWrvTXUBhqiGkYkk8JSYKSZDTWzJGA2sDC8gJlNBu7BSwjbIhiLiEh8y5/kvQcvIRX0ScM52Lw7uvcqRCwpOOcCwPXAK8Bq4Cnn3Cozm2tm5waL/ReQATxtZsvNbGELuxMR6d4y+0NmfigpNA2hvaE8uu0KCZHcuXNuEbDooGU/DZueFsnji4h0KWGNzQXBh+1sjHIPpLhoaBYREbyksLMUairo3yuFRL9F/a5mJQURkXgxYKL3/tUq/D4jPytVNQURkR4rd4T3Xv4Z4N2rEO02BSUFEZF40Xsw+BJhZxngjYGkmoKISE/lT4DsoaGkUNAnlR2VtVTXRe9eBSUFEZF4kjMCdnqXjwYFeyBt2h29S0hKCiIi8SRnuJcUGhspCN2rEL1LSEoKIiLxJGcENNRCxcbQcxWi2S1VSUFEJJ7kBHsg7SwjNyOZpARfVBublRREROJJKCl8hs9nUe+WqqQgIhJPMvpBUkZYD6TodktVUhARiSdmwcbmpnsVUtWmICLSo+WMgB2lgNctdfe+evbW1Efl0EoKIiLxJmcE7F4PgdpQt9RoXUJSUhARiTc5IwAH5Z+HuqVGKylE9HkK0dLQ0EB5eTn19dGpXknHJSYmkp2djd/vj3UoIvErZ7j3vrOMgkFDgeg9bKdbJIXy8nJSUlLIzc3FzGIdjrTAOUdlZSXl5eXoWdsircjenxSyx3yNtCR/1Bqbu8Xlo/r6ejIyMpQQ4pyZkZGRoRqdyOGkZkF6Huwsw8y7V0FtCu2khNA16N9JpI3CB8brkxa1y0fdJimIiHQrYfcqFPRJZdOuapxzET+skkIn2LlzJ5MmTWLSpEn079+fgQMHhubr6uoZUkEiAAAO40lEQVTatI8rr7yStWvXtlrmrrvuYsGCBZ0RMi+88AKTJk1i4sSJFBYWct9993XKfkWkk+SMgKptULOHQdlp7K0NsKc68pdeu0VDc6zl5OSwfPlyAH7+85+TkZHBLbfcckAZ5xzOOXy+5vPwAw88cNjjXHfddUceLFBbW8u1117LsmXLyM/Pp7a2li+//PKI9nm4zyci7RQ2BlJBn3zA65aalZYU0cPqf3AElZWVUVhYyNe//nXGjh3Lli1bmDNnDsXFxYwdO5a5c+eGyp588sksX76cQCBAVlYWt956KxMnTuSEE05g27ZtAPzkJz/h97//faj8rbfeSklJCaNHj+btt98GoKqqigsvvJDCwkIuuugiiouLQwmryZ49e3DOkZ2dDUBycjKjRo0CYOvWrZx33nlMmDCBiRMnsmTJEgB++9vfMm7cOMaNG8cdd9zR4ud76aWXOOGEEygqKmLWrFlUVVVF8AyLdGMHJIWm5ypEvl2h29UUfvHnVXyyuaJT91mY34ufnTO2Q9uuWbOGhx9+mOLiYgDmzZtHdnY2gUCAqVOnctFFF1FYWHjANnv27OHUU09l3rx5fP/732f+/Pnceuuth+zbOcd7773HwoULmTt3Li+//DJ33HEH/fv359lnn+Wjjz6iqKjokO369u3LjBkzOOqoozj99NM555xzmDVrFj6fj+uuu44zzjiD66+/nkAgwL59+1iyZAkLFixg6dKlBAIBSkpKOO2000hNTT3g823bto158+bx+uuvk5aWxq9+9Stuu+02fvSjH3Xo3In0aNnDAIOdZQwaeT5Jfl9ULh+pphBhw4cPDyUEgMcff5yioiKKiopYvXo1n3zyySHbpKamcuaZZwJwzDHH8MUXXzS77wsuuOCQMosXL2b27NkATJw4kbFjm09mDz74IK+99hrFxcXMmzePOXPmAPDGG29wzTXXAJCQkECvXr1YvHgxF154IampqWRmZnL++efz97///ZDP9/bbb/PJJ59w4oknMmnSJBYsWNBi7CJyGAnJkDUYdpbROzWRNb+cyeySwZE/bMSPEGUd/UUfKenp6aHp0tJSbrvtNt577z2ysrK47LLLqKmpOWSbpKT91wz9fj+BQKDZfScnJx+2TGsmTJjAhAkTuPTSSzn66KNDjc3t6TYa/vmcc8ycOZNHHnmk3bGISDNyRoR6IPl80enOrZpCFFVUVJCZmUmvXr3YsmULr7zySqcf46STTuKpp54CYOXKlc3WRCoqKnjrrbdC88uXL+eoo44CYOrUqdx9992AN3xIRUUFU6ZM4bnnnqO6uprKykpeeOEFpkyZcsh+TzzxRN58803WrVsHeO0bpaWlnf4ZRXqMpnsVotAVtUm3qynEs6KiIgoLCxkzZgxHHXUUJ510Uqcf44YbbuAb3/gGhYWFoVfv3r0PKOOc49e//jVXX301qampZGRkMH/+fADuvPNOrr76au655x4SEhK45557KCkp4ZJLLuHYY48F4Nprr2X8+PGUlZUdsN9+/fpx//33M2vWrFBX3P/8z/9k5MiRnf45RXqEnBFQtxcqt0Fmv6gc0qJxM0RnKi4udsuWLTtg2ebNm8nPz49RRPElEAgQCARISUmhtLSU6dOnU1paSkJC/OR//XuJtFHZ6/DoBXDFIhhyZD8izex951zx4crFzzeFdIrKykpOP/10AoEAzrnQL34R6YJC3VLLjjgptJW+LbqZrKws3n///ViHISKdoXcB+JNDjc3RoIZmEZF45fN79ysEB8aLyiGjdiQREWm/sIHxokFJQUQknuWMgPJ10NgQlcMpKYiIxLOcEdBYD7vXR+VwSgqdoDOGzgaYP38+W7duDc23ZTjttpo7dy5jx45lwoQJTJ48maVLl3bKfkUkwsIGxosG9T7qBG0ZOrst5s+fT1FREf379wfaNpx2W/z973/n1Vdf5cMPPyQpKYnt27d3aFiMcIFAQF1dRaIhvFvqyGkRP5xqChH20EMPUVJSwqRJk/jud79LY2MjgUCAyy+/nPHjxzNu3Dhuv/12nnzySZYvX86sWbNCNYy2DKddWlrKcccdx/jx4/nxj39MVlbWITFs2bKFvLy80JhKeXl5DBgwAIAlS5ZwwgknMHHiRI477jj27dtHdXU13/zmNxk/fjxFRUWhITHuu+8+zj//fKZOncqMGTMAb9TXkpISJkyYcMBQ4CLSSdJzIbl31Bqbu99PvZduha0rO3ef/cfDmfPavdnHH3/Mc889x9tvv01CQgJz5szhiSeeYPjw4ezYsYOVK704d+/eTVZWFnfccQd33nknkyZNOmRfLQ2nfcMNN3DLLbdw8cUXc+eddzYbx8yZM/mP//gPRo8ezbRp05g9ezZTpkyhpqaG2bNn8+yzz1JUVMSePXtITk7md7/7HcnJyaxcuZJVq1Zx1llnhcYw+vDDD1m+fDl9+vRh0aJFrF+/niVLluCc46yzzuLtt9/mxBNPbPe5EpEWmEW1B1JEawpmNtPM1ppZmZkd8kAAMzvFzD4ws4CZXRTJWGLhr3/9K0uXLqW4uJhJkybx5ptv8tlnnzFixAjWrl3LjTfeyCuvvHLI2ETNaWk47SVLlnDhhRcCcOmllza7ba9evfjggw+4++67ycnJ4aKLLuKRRx5h9erVDB48OPTMhd69e+P3+1m8eDGXXXYZAGPHjiU/Pz80ztH06dPp06cPAK+++iovvfQSkydPpqioiLKyMj799NOOnzARaV7TwHhRELGagpn5gbuAM4CNwFIzW+icCx+2cz1wBdD+C/At6cAv+khxzvGtb32LX/7yl4esW7FiBS+99BJ33XUXzz77LPfee2+r+2rrcNotSUhIYOrUqUydOpXCwkKefPJJxo0b1659wKFDZf/kJz/hqquuavd+RKQdckbAyqehvhoSUyN6qEjWFEqAMufcOudcHfAEcF54AefcF865FUBjBOOImWnTpvHUU0+xY8cOwOultH79erZv345zjosvvpi5c+fywQcfAJCZmcnevXvbdYySkhKee+45AJ544olmy6xevfqAEU2bhsouLCxk/fr1oeNXVFTQ0NDAlClTWLBgQWjbLVu2MGLEiEP2O2PGDO6///7QIzc3btwY+qwi0olyhgMOyj+P+KEi2aYwENgQNr8ROC6Cx4s748eP52c/+xnTpk2jsbGRxMRE7r77bvx+P1dddRXOOcyM3/zmN4DXBfXb3/42qampvPfee206xu23387ll1/OL37xC2bMmNHspajKykpuvPFGKioq8Pl8jB49mnvvvZfk5GQef/xxrr32WmpqakhNTeVvf/sbN9xwA9dccw3jx48nMTGRhx9++ICaSpOzzjqLNWvWcPzxxwNeUnvsscfIzc09grMmIocI74HUr7D1skcoYkNnB9sIZjrnvh2cvxw4zjl3fTNlHwRedM4908K+5gBzAAYPHnzMl19+ecD6njwUc1VVFWlpaZgZjz76KM899xzPPvtsrMNqVU/+9xLpkNq9cOexcMZcmPDPHdpFPAydvQkYFDZfEFzWbs65e4F7wXuewpGH1n0sXbqUm266icbGRvr06dNp9zaISBxJzoSb10TlUJFMCkuBkWY2FC8ZzAaa7x4jHXbaaaeFbpwTETlSEWtods4FgOuBV4DVwFPOuVVmNtfMzgUws2PNbCNwMXCPma06guN1RtgSYfp3EolvEb15zTm3CFh00LKfhk0vxbusdEQSExOprKwkIyMDMzvS3UmEOOeorKwkMTEx1qGISAu6xR3N2dnZlJeXt7s7p0RfYmIi2dnZsQ5DRFrQLZKC3+8nLy8v1mGIiHR5GhBPRERClBRERCRESUFEREIidkdzpJjZdiD8lubewJ42zucCkRqc5+DjduZ2rZVp77qefr5aW6/z1b71R3q+IHLnTOfrUEc55w7f+Oqc69Iv4N62zgPLohVHZ27XWpn2ruvp56u19Tpf0T1fkTxnOl8df3WHy0d/bud8tOLozO1aK9PedT39fLW2Xuerfet1vtq3Pp7PV0iXu3x0JMxsmWvDgFDi0flqH52v9tM5a59onK/uUFNoj9afZCMH0/lqH52v9tM5a5+In68eVVMQEZHW9bSagoiItEJJQUREQpQUREQkREkhyMzON7M/mtmTZjY91vHEOzMbZmb3m1mzj1AVMLN0M3so+Hf19VjHE+/0N9U+kfrO6hZJwczmm9k2M/v4oOUzzWytmZWZ2a2t7cM597xz7mrgO8CsSMYba510vtY5566KbKTxp53n7gLgmeDf1blRDzYOtOd89dS/qXDtPF8R+c7qFkkBeBCYGb7AzPzAXcCZQCFwiZkVmtl4M3vxoFffsE1/EtyuO3uQzjtfPc2DtPHc4T1AakOwWEMUY4wnD9L28yUdO1+d+p3VLZ6n4Jx7y8yGHLS4BChzzq0DMLMngPOcc78Gzj54H+Y9sm0e8JJz7oPIRhxbnXG+eqr2nDtgI15iWE73+QHWLu08X59EN7r4057zZWaricB3Vnf+Qx3I/l9p4P0HHdhK+RuAacBFZvadSAYWp9p1vswsx8zuBiab2Q8jHVyca+nc/Qm40Mz+QAyGK4hjzZ4v/U21qKW/r4h8Z3WLmkJncM7dDtwe6zi6CufcTrxrmdIC51wVcGWs4+gq9DfVPpH6zurONYVNwKCw+YLgMmmezlfH6dy1j85X+0T1fHXnpLAUGGlmQ80sCZgNLIxxTPFM56vjdO7aR+erfaJ6vrpFUjCzx4F3gNFmttHMrnLOBYDrgVeA1cBTzrlVsYwzXuh8dZzOXfvofLVPPJwvDYgnIiIh3aKmICIinUNJQUREQpQUREQkRElBRERClBRERCRESUFEREKUFEREJERJQUREQpQURDpB8CEoy4OvJWam/1vSJemOZpFOYGalwCnOuS2xjkXkSOjXjEjnWASsMLPfxzoQkSOh5ymIHCEzOxEwYEBw8DKRLks1BZEjdzHwqXMuYJ5esQ5IpKPUpiByhMysBLgfcEA18F3n3PuxjUqkY5QUREQkRJePREQkRElBRERClBRERCRESUFEREKUFEREJERJQUREQpQUREQkRElBRERC/j+Qri7G95XFwAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# epsilon的影响\n",
    "def test_LinearSVR_epsilon(*data):\n",
    "    train_x,test_x, train_y, test_y = data\n",
    "    epsilons = np.logspace(-2,2)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for epsilon in epsilons:\n",
    "        svc = svm.LinearSVR(epsilon=epsilon, loss='squared_epsilon_insensitive')\n",
    "        svc.fit(train_x,train_y)\n",
    "        train_score.append(svc.score(train_x,train_y))\n",
    "        test_score.append(svc.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.plot(epsilons,train_score,label='Training Score')\n",
    "    ax.plot(epsilons,test_score, label='Testing Score')\n",
    "    ax.set_xlabel(r'$\\epsilon$')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('LinearSVR-$\\epsilon$')\n",
    "    ax.set_xscale('log')\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    plt.show()\n",
    "    \n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_LinearSVR_epsilon(x_train, x_test, y_train, y_test )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 惩罚项系数的影响\n",
    "def test_LinearSVR_C(*data):\n",
    "    train_x,test_x, train_y, test_y = data\n",
    "    Cs = np.logspace(-1,2)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for C in Cs:\n",
    "        svr = svm.LinearSVR(C=C,epsilon=0.1,loss='squared_epsilon_insensitive')\n",
    "        svr.fit(train_x,train_y)\n",
    "        train_score.append(svr.score(train_x,train_y))\n",
    "        test_score.append(svr.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.plot(Cs,train_score,label='Training Score')\n",
    "    ax.plot(Cs,test_score, label='Testing Score')\n",
    "    ax.set_xlabel(r'C')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('LinearSVR-C')\n",
    "    ax.set_xscale('log')\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    plt.show()\n",
    "    \n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_LinearSVR_C(x_train, x_test, y_train, y_test )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
